//@单元测试：

/**表格打印情形的自动计算宽度；
 * */
function sum(fixed,printColWidth,agptWidth,nested) {
    let config=printColWidth? printColWidth : fixed;
    if(!config)  return [undefined, undefined];
    //2种形式[pixels, %, relative_length%]不能混和配置的吧；
    let percent=false;
    let pcs=config.map((width, i) => {
        if(!percent && width.endsWith('%'))   percent=true;
        const strnum = width.replace(/[%]/g, '');
        return Number(strnum);
    });
    let remain=-1;   //配置数组当中唯一一个的 %位置点 的索引；
    pcs.forEach((wd, index, array) => {
        if(wd<=0){
            array[index]=0;
            if(percent && array[index]===0)  remain=index;
        }
    });
    let totals= pcs.reduce(function (total, value) {
        return total + value;
    }, 0);
    if(percent && remain>=0){
        if(totals<100){
            pcs[remain]=100-totals;      //分配唯一个的 %位点
            totals=100;
        }
    }
    if(!nested && agptWidth<=0)      //也允许agptWidth==0来纠正的
        return ["fixed", pcs];
    //重新计算比例：
    let finalPc=pcs.map((oldpc, i) => {
        return oldpc/totals;
    });
    // if(agptWidth<=0)
    return ["fixed", finalPc];      //嵌套 设置agptWidth={0}
    //嵌套
    // let pppxs=finalPc.map((oldpc, i) => {
    //     return oldpc*agptWidth;
    // });
    // let totalFin= pppxs.reduce(function (total, value) {
    //     return total + value;
    // }, 0);
    // if(totalFin>agptWidth){
    //     //寻最大的数字 的列
    //     let max = pppxs[0];
    //     let pos=0;
    //     for(let i = 1; i < pppxs.length; i++){
    //         if( max < pppxs[i] ){
    //             max = pppxs[i];
    //             pos= i;
    //         }
    //     }
    //     pppxs[pos]=pppxs[pos]- (totalFin-agptWidth);    //需要扣除掉：避免超大的
    // }
    //不能用px数字直接<colgroup<col配置，列数多了就会很容易出现实际上竟然超出限制px数，导致边线会丢失。 【只好】改成百分比做法+上级来设置width: 718px;
}
module.exports = sum;
